package com.example.learn_spring_boot3.service;

import com.example.learn_spring_boot3.entity.User;
import com.example.learn_spring_boot3.utils.ResponseData;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestHeader;

import java.util.ArrayList;


/**
 * 用户业务类接口
 */
public interface UserService {

    /**
     * 注册用户
     */
    ResponseEntity<ResponseData> register(User user);

    /**
     * 用户登录
     */
    ResponseEntity<ResponseData> login(String name, String password);

    /**
     * 获取用户信息
     */
    ResponseEntity<ResponseData> info(String token);

    /**
     * 查询所有的用户
     */
    ResponseEntity<ResponseData> getList();

    /**
     * 查询所有的用户带分页
     */
    ResponseEntity<ResponseData> getListByPage(Integer current, Integer size);

    /**
     * 查询所有的用户带性别和年龄条件
     */
    ResponseEntity<ResponseData> getListByQuery(Integer sex, Integer age);

    /**
     * 查询所有的用户即关联的订单
     */
    ResponseEntity<ResponseData> getListAndOrders();

    /**
     * 查询所有的用户(优先使用缓存)
     */
    ResponseEntity<ResponseData> getListByCatch();

    /**
     * 添加测试用户数据
     */
    ResponseEntity<ResponseData> addTestData(int num);

    /**
     * 根据id查询对应的用户
     */
    ResponseEntity<ResponseData> getUserById(int id);

    /**
     * 新增用户
     */
    ResponseEntity<ResponseData> add(User user);

    /**
     * 批量新增用户
     */
    ResponseEntity<ResponseData> addBatch(ArrayList<User> userList);

    /**
     * 更新用户
     */
    ResponseEntity<ResponseData> update(User user);

    /**
     * 删除用户
     */
    ResponseEntity<ResponseData> delete(int id);


    /**
     * 测试事务
     */
    ResponseEntity<ResponseData> testTran(int id) throws Exception;
}
